﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using BLL_NhaSach;
using System.Text.RegularExpressions;
using System.Collections;

namespace AppQlyNhaSach.MatHang
{
    public partial class frmNhaCungCap : DevExpress.XtraEditors.XtraForm, IDataGrid
    {
        NhaCungCapBLL nccBLL;
        public frmNhaCungCap()
        {
            InitializeComponent();
        }

        private void frmNhaCungCap_Load(object sender, EventArgs e)
        {
			nccBLL = new NhaCungCapBLL(Properties.Settings.Default.ConnectionStringUser);
            grdNCC.DataSource = nccBLL.getAllData();
        }

        public System.Collections.ArrayList getRowsID()
        {
            ArrayList lst_id = new ArrayList();
            int[] ids = gridView1.GetSelectedRows();
            foreach (int i in ids)
            {
                int id =(Int32)gridView1.GetRowCellValue(i, "MaNCC");
                lst_id.Add(id);
            }
            return lst_id;
        }

        private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            try
            {
                int id = (Int32)gridView1.GetFocusedRowCellValue("MaNCC");
                DAL_NhaSach.NhaCungCap ncc = (DAL_NhaSach.NhaCungCap)nccBLL.findObjects(id);
                txtMa.Text = ncc.MaNCC.ToString();
                txtTen.Text = ncc.TenNCC;
                txtDiaChi.Text = ncc.DiaChi;
                txtEmail.Text = ncc.Email;
                txtSdt.Text = ncc.SoDienThoai;
            }
            catch { }
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            if (btnThem.Text.Equals("&Thêm"))
            {
                changeState(true);
                btnHuy.Visible = true;
                btnThem.Text = "Xác Nhận";
                txtMa.Text = "";
                grdNCC.Enabled = false;
                txtTen.Text = "";
                txtDiaChi.Text = "";
                txtSdt.Text = "";
                txtEmail.Text = "";
            }
            else if (btnThem.Text.Equals("Xác Nhận"))
            {
                if (checkValid())
                {
                    DialogResult r = XtraMessageBox.Show("Bạn có chắc chắn muốn thêm nhà cung cấp này không?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (r == DialogResult.Yes)
                    {
                        DAL_NhaSach.NhaCungCap ncc = new DAL_NhaSach.NhaCungCap();
                        ncc.TenNCC = txtTen.Text;
                        ncc.DiaChi = txtDiaChi.Text;
                        ncc.Email = txtEmail.Text;
                        ncc.SoDienThoai = txtSdt.Text;
                        if (nccBLL.addObject(ncc))
                        {
                            XtraMessageBox.Show("Thêm thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            changeState(false);
                            grdNCC.Enabled = true;
                            btnThem.Text = "&Thêm";
                            btnHuy.Visible = false;
                            grdNCC.DataSource = nccBLL.getAllData();
                        }
                        else XtraMessageBox.Show("Thêm thất bại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    }
                }
            }
            else
            {
                if (checkValid())
                {
                    DialogResult r = XtraMessageBox.Show("Bạn có chắc chắn muốn cập nhật lại thông tin nhà cung cấp này không?", "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (r == DialogResult.Yes)
                    {
                        DAL_NhaSach.NhaCungCap ncc = new DAL_NhaSach.NhaCungCap();
                        ncc.MaNCC = int.Parse(txtMa.Text);
                        ncc.TenNCC = txtTen.Text;
                        ncc.Email = txtEmail.Text;
                        ncc.DiaChi = txtDiaChi.Text;
                        ncc.SoDienThoai = txtSdt.Text;
                        if (nccBLL.updateObject(ncc))
                        {
                            XtraMessageBox.Show("Cập nhật thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            changeState(false);
                            btnHuy.Visible = false;
                            btnThem.Text = "&Thêm";
                            grdNCC.DataSource = nccBLL.getAllData();
                        }
                        else XtraMessageBox.Show("Cập nhật thất bại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }
        private void changeState(bool state){
            if (state)
            {
                txtTen.Properties.ReadOnly = !true;
                txtSdt.Properties.ReadOnly = !true;
                txtDiaChi.Properties.ReadOnly = !true;
                txtEmail.Properties.ReadOnly = !true;
            }
            else
            {
                txtTen.Properties.ReadOnly = true;
                txtSdt.Properties.ReadOnly = true;
                txtDiaChi.Properties.ReadOnly = true;
                txtEmail.Properties.ReadOnly = true;
            }
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            changeState(false);
            grdNCC.Enabled = true;
            btnThem.Text = "&Thêm";
            btnHuy.Visible = false;
            grdNCC.DataSource = nccBLL.getAllData();
        }
        private bool checkValid()
        {
            //String pCMND = @"^\d{9}$";
            String pEmail = @"^\w+@[a-z]+?\.[a-z]{2,3}$";
            String pSdt = @"^0\d{8,10}$";
           // Regex rCMND = new Regex(pCMND);
            Regex rEmail = new Regex(pEmail);
            Regex rSdt = new Regex(pSdt);
            String nof = "";
          //  if (!rCMND.IsMatch(txtCMND.Text))
           //     nof += "Số CMND không hợp lệ !\n";
            if (!rEmail.IsMatch(txtEmail.Text))
                nof += "Địa chỉ email không hợp lệ !\n";
            if (!rSdt.IsMatch(txtSdt.Text))
                nof += "Số điện thoại không hợp lệ !";
            if (!nof.Equals(""))
            {
                XtraMessageBox.Show(nof, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            else return true;
        }

        private void xóaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult r = XtraMessageBox.Show("Bạn có chắc chắn muốn xóa các nhà cung cấp này không?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (r == DialogResult.Yes)
            {
                try
                {
                    ArrayList lst = getRowsID();
                    if (lst.Count > 0)
                    {
                        foreach (int id in lst)
                        {
                            nccBLL.deleteObject(id);
                        }
                        XtraMessageBox.Show("Xóa thành công");
                        grdNCC.DataSource = nccBLL.getAllData();
                    }
                    else XtraMessageBox.Show("Phải chọn nhà cung cấp cần xóa");
                }
                catch
                {
                    XtraMessageBox.Show("Lỗi trong khi xóa");
                }
            }
        }

        private void sửaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            changeState(true);
            btnThem.Text = "Cập Nhật";
            btnHuy.Visible = true;
        }

        private void frmNhaCungCap_FormClosing(object sender, FormClosingEventArgs e)
        {
            frmMainNS.isNCC = false;
        }
    }
}